export class Vector{
  /**
   * 生成一个向量
   * @param {*} x 
   * @param {*} y 
   */
  constructor(x, y){
    this.x = x || 0;
    this.y = y || 0;
  }

  /**
   * 返回一个复制后的向量
   * @returns 
   */
  copy(){
    return new Vector(this.x, this.y)
  }

  /**
   * 向量增加另一个向量的值
   * @param {Vector} other 
   * @returns 
   */
  add(other){
    return new Vector(this.x + other.x, this.y + other.y);
  }

  /**
   * 向量减少另一个向量的值
   * @param {Vector} other 
   * @returns 
   */
  sub(other){
    return new Vector(this.x - other.x, this.y - other.y);
  }

  /**
   * 获得两点之间的直线长度
   * @param {*} other 
   * @returns 
   */
  distance(other){
    return Math.hypot(this.x - other.x, this.y - other.y);
  }

  /**
   * 判断两者是否一致
   * @param {Vector} other 
   * @returns 
   */
  same(other){
    return this.x === other.x && this.y === other.y;
  }
}